#setwd('/afs/inf.ed.ac.uk/user/s17/s1725186/Documents/PhD-Models/FirstPUModel/RMarkdowns')

library(tidyverse) ; library(reshape2) ; library(glue) ; library(plotly) ; library(plotlyutils)
library(RColorBrewer) ; library(viridis) ; require(gridExtra) ; library(GGally)
library(Rtsne)
library(ClusterR)
library(DESeq2)
library(expss)
library(knitr)

Load preprocessed dataset (preprocessing code in 20_03_03_data_preprocessing.Rmd)

# Gandal dataset
load('./../Data/preprocessed_data.RData')
datExpr = datExpr %>% data.frame
DE_info = DE_info %>% data.frame

# GO Neuronal annotations: regex 'neuron' in GO functional annotations and label the genes that make a match as neuronal
GO_annotations = read.csv('./../Data/genes_GO_annotations.csv')
GO_neuronal = GO_annotations %>% filter(grepl('neuron', go_term)) %>% 
              mutate('ID'=as.character(ensembl_gene_id)) %>% 
              dplyr::select(-ensembl_gene_id) %>% distinct(ID) %>%
              mutate('Neuronal'=1)

# SFARI Genes
SFARI_genes = read_csv('./../../../SFARI/Data/SFARI_genes_08-29-2019_with_ensembl_IDs.csv')
SFARI_genes = SFARI_genes[!duplicated(SFARI_genes$ID) & !is.na(SFARI_genes$ID),]

# Update DE_info with SFARI and Neuronal information
DE_info = DE_info %>% mutate('ID'=rownames(.)) %>% left_join(SFARI_genes, by='ID') %>% 
  mutate(`gene-score`=ifelse(is.na(`gene-score`), 'None', `gene-score`)) %>%
  distinct(ID, .keep_all = TRUE) %>% left_join(GO_neuronal, by='ID') %>%
  mutate(Neuronal=ifelse(is.na(Neuronal), 0, Neuronal)) %>%
  mutate(gene.score=ifelse(`gene-score`=='None' & Neuronal==1, 'Neuronal', `gene-score`), significant=padj<0.05 & !is.na(padj))


SFARI_colour_hue = function(r) {
  pal = c('#FF7631','#FFB100','#E8E328','#8CC83F','#62CCA6','#59B9C9','#b3b3b3','#808080','gray','#d9d9d9')[r]
}

SFARI Gene list

cat(paste0('There are ', length(unique(SFARI_genes$`gene-symbol`)), ' genes with a SFARI score'))
## There are 979 genes with a SFARI score

The results from this section don’t change depending on the brain region analised, so I’m not going to repeat them here. These can be found in the folder where all the brain regions were analysed together


Exploratory Analysis

As in the previous section, the results from this section don’t change depending on the brain region analised, so I’m not going to repeat them here. These can be found in the folder where all the brain regions were analysed together


Gene Expression


Normalised data

  • The higher the SFARI score, the higher the mean expression of the gene: This pattern is quite strong and it doesn’t have any biological interpretation, so it’s probably bias in the SFARI score assignment

  • The higher the SFARI score, the lower the standard deviation: This pattern is not as strong, but it is weird because the data was originally heteroscedastic with a positive relation between mean and variance, so the fact that the relation now seems to have reversed could mean that the vst normalisation ended up affecting the highly expressed genes more than it should have when trying to correct their higher variance

plot_data = data.frame('ID'=rownames(datExpr), 'MeanExpr'=rowMeans(datExpr), 'SDExpr'=apply(datExpr,1,sd)) %>% 
            left_join(DE_info, by='ID')

p1 = ggplotly(plot_data %>% ggplot(aes(gene.score, MeanExpr, fill=gene.score)) + geom_boxplot() + 
              scale_fill_manual(values=SFARI_colour_hue(r=c(1:6,8,7))) + theme_minimal() +
              theme(legend.position='none'))

p2 = ggplotly(plot_data %>% ggplot(aes(gene.score, SDExpr, fill=gene.score)) + geom_boxplot() + 
              scale_fill_manual(values=SFARI_colour_hue(r=c(1:6,8,7))) + theme_minimal() +
              ggtitle('Mean Expression (left) and SD (right) by SFARI score') + 
              theme(legend.position='none'))

subplot(p1, p2, nrows=1)
rm(plot_data, p1, p2)


Raw data

Just to corroborate that the relation between sd and SFARI score used to be in the opposite direction before the normalisation: The higher the SFARI score the higher the mean expression and the higher the standard deviation

*There are a lot of outliers, but the plot is interactive so you can zoom in

# Save preprocessed results
datExpr_prep = datExpr
datMeta_prep = datMeta
DE_info_prep = DE_info

load('./../Data/filtered_raw_data.RData')

plot_data = data.frame('ID'=rownames(datExpr), 'MeanExpr'=rowMeans(datExpr), 'SDExpr'=apply(datExpr,1,sd)) %>% 
            left_join(DE_info, by='ID')

p1 = ggplotly(plot_data %>% ggplot(aes(gene.score, MeanExpr, fill=gene.score)) + geom_boxplot() + 
              scale_fill_manual(values=SFARI_colour_hue(r=c(1:6,8,7))) + theme_minimal() +
              theme(legend.position='none'))

p2 = ggplotly(plot_data %>% ggplot(aes(gene.score, SDExpr, fill=gene.score)) + geom_boxplot() + 
              scale_fill_manual(values=SFARI_colour_hue(r=c(1:6,8,7))) + theme_minimal() +
              ggtitle('Mean Expression (left) and SD (right) by SFARI score') + 
              theme(legend.position='none'))

subplot(p1, p2, nrows=1)
rm(plot_data, p1, p2)

Return to normalised version of the data

# Save preprocessed results
datExpr = datExpr_prep
datMeta = datMeta_prep
DE_info = DE_info_prep

rm(datExpr_prep, datMeta_prep, DE_info_prep)


Log Fold Change

There seems to be a negative relation between SFARI score and log fold change when it would be expected to be either positively correlated or independent from each other (this last one because there are other factors that determine if a gene is releated to Autism apart from differences in gene expression)

Wikipedia mentions the likely explanation for this: “A disadvantage and serious risk of using fold change in this setting is that it is biased and may misclassify differentially expressed genes with large differences (B − A) but small ratios (B/A), leading to poor identification of changes at high expression levels”.

Based on this, since we saw there is a strong relation between SFARI score and mean expression, the bias in log fold change affects mainly genes with high SFARI scores, which would be the ones we are most interested in.

On top of this, I believe this effect is made more extreme by the pattern found in the previous plots, since the higher expressed genes were the most affected by the normalisation transformation, ending up with a smaller variance than the rest of the data, which is related to smaller ratios. (This is a constant problem independently of the normalisation function used).

ggplotly(DE_info %>% ggplot(aes(x=gene.score, y=abs(log2FoldChange), fill=gene.score)) + 
         geom_boxplot() + scale_fill_manual(values=SFARI_colour_hue(r=c(1:6,8,7))) + 
         theme_minimal() + theme(legend.position='none'))


Effects of modifying filtering threshold by SFARI score

lfc_list = seq(1, 1.25, 0.01)

all_counts = data.frame('group'='All', 'n'=as.character(nrow(DE_info)))
Neuronal_counts = data.frame('group'='Neuronal', n=as.character(sum(DE_info$Neuronal)))
lfc_counts_all = DE_info %>% group_by(`gene-score`) %>% tally %>%
                 mutate('group'=as.factor(`gene-score`), 'n'=as.character(n)) %>%
                 dplyr::select(group, n) %>%
                 bind_rows(Neuronal_counts, all_counts) %>%
                 mutate('lfc'=-1) %>%  dplyr::select(lfc, group, n)

for(lfc in lfc_list){
  
  # Recalculate DE_info with the new threshold (p-values change)
  DE_genes = results(dds, lfcThreshold=log2(lfc), altHypothesis='greaterAbs') %>% data.frame
  
  DE_genes = DE_genes %>% mutate('ID'=rownames(.)) %>% left_join(SFARI_genes, by='ID') %>% 
             mutate(`gene-score`=ifelse(is.na(`gene-score`), 'None', `gene-score`)) %>%
             distinct(ID, .keep_all = TRUE) %>% left_join(GO_neuronal, by='ID') %>%
             mutate(Neuronal=ifelse(is.na(Neuronal), 0, Neuronal)) %>%
             mutate(gene.score=ifelse(`gene-score`=='None' & Neuronal==1, 'Neuronal', `gene-score`))
  
  DE_genes = DE_genes %>% filter(padj<0.05 & abs(log2FoldChange)>log2(lfc))

  
  # Calculate counts by groups
  all_counts = data.frame('group'='All', 'n'=as.character(nrow(DE_genes)))
  Neuronal_counts = data.frame('group'='Neuronal', n=as.character(sum(DE_genes$Neuronal)))
  lfc_counts = DE_genes %>% group_by(`gene-score`) %>% tally %>%
               mutate('group'=`gene-score`, 'n'=as.character(n)) %>%
               bind_rows(Neuronal_counts, all_counts) %>%
               mutate('lfc'=lfc) %>% dplyr::select(lfc, group, n)
  
  
  # Update lfc_counts_all
  lfc_counts_all = lfc_counts_all %>% bind_rows(lfc_counts)
}

# Add missing entries with 0s
lfc_counts_all = expand.grid('group'=unique(lfc_counts_all$group), 'lfc'=unique(lfc_counts_all$lfc)) %>% 
  left_join(lfc_counts_all, by=c('group','lfc')) %>% replace(is.na(.), 0)

# Calculate percentage of each group remaining
tot_counts = DE_info %>% group_by(`gene-score`) %>% tally() %>% filter(`gene-score`!='None') %>%
             mutate('group'=`gene-score`, 'tot'=n) %>% dplyr::select(group, tot) %>%
             bind_rows(data.frame('group'='Neuronal', 'tot'=sum(DE_info$Neuronal)),
                       data.frame('group'='All', 'tot'=nrow(DE_info)))

lfc_counts_all = lfc_counts_all %>% filter(lfc!=-1, group!='None') %>% 
                 left_join(tot_counts, by='group') %>% mutate('perc'=round(100*as.numeric(n)/tot,2))


# Plot change of number of genes
ggplotly(lfc_counts_all %>% ggplot(aes(lfc, perc, color=group)) + geom_point(aes(id=n)) + geom_line() + 
         scale_color_manual(values=SFARI_colour_hue(r=1:8)) + ylab('% of remaining genes') +  xlab('Fold Change') + 
         ggtitle('Effect of filtering thresholds by SFARI score') + theme_minimal())
rm(lfc_list, all_counts, Neuronal_counts, lfc_counts_all, lfc, lfc_counts, lfc_counts_all, tot_counts, lfc_counts_all)
cat(paste0('There are ', sum(DE_info$padj<0.05 & DE_info$`gene-score` != 'None' & !is.na(DE_info$padj)),
           ' SFARI genes that are differentially expressed'))
## There are 381 SFARI genes that are differentially expressed
kable(DE_info %>% filter(padj<0.05 & `gene-score` %in% c(1,2,3) & !is.na(padj)) %>% 
      dplyr::select(ID, `gene-symbol`, log2FoldChange, padj, `gene-score`, Neuronal) %>% arrange(`gene-score`,padj),
      caption = 'Top SFARI scores that are DE')
Top SFARI scores that are DE
ID gene-symbol log2FoldChange padj gene-score Neuronal
ENSG00000136535 TBR1 -0.3057313 0.0000952 1 1
ENSG00000136531 SCN2A -0.1954881 0.0004761 1 1
ENSG00000110066 KMT5B 0.1321022 0.0005438 1 0
ENSG00000197283 SYNGAP1 -0.2212804 0.0016706 1 1
ENSG00000145362 ANK2 -0.1511254 0.0049756 1 1
ENSG00000173575 CHD2 0.1076313 0.0255370 1 0
ENSG00000157540 DYRK1A -0.0547743 0.0299256 1 0
ENSG00000114166 KAT2B 0.2970078 0.0000004 2 0
ENSG00000108510 MED13 0.1978968 0.0000005 2 0
ENSG00000174469 CNTNAP2 -0.4030458 0.0000025 2 1
ENSG00000055609 KMT2C 0.2222862 0.0000161 2 0
ENSG00000118482 PHF3 0.1827794 0.0000182 2 0
ENSG00000157103 SLC6A1 -0.1884775 0.0000718 2 1
ENSG00000177030 DEAF1 -0.1863424 0.0001451 2 0
ENSG00000155974 GRIP1 -0.2156556 0.0001496 2 1
ENSG00000147050 KDM6A 0.1924217 0.0002788 2 0
ENSG00000061676 NCKAP1 -0.1499081 0.0002889 2 0
ENSG00000038382 TRIO 0.1277617 0.0005954 2 0
ENSG00000196557 CACNA1H -0.3893469 0.0008310 2 0
ENSG00000257923 CUX1 0.1922092 0.0010873 2 0
ENSG00000123636 BAZ2B 0.2001323 0.0025606 2 0
ENSG00000102786 INTS6 0.1353411 0.0033488 2 0
ENSG00000149930 TAOK2 -0.1307934 0.0037920 2 0
ENSG00000169862 CTNND2 -0.1083342 0.0041750 2 1
ENSG00000125505 MBOAT7 -0.2147595 0.0050990 2 0
ENSG00000112851 ERBIN 0.2117856 0.0058538 2 0
ENSG00000169057 MECP2 -0.1402080 0.0061508 2 1
ENSG00000123066 MED13L 0.1213513 0.0064021 2 0
ENSG00000187555 USP7 -0.1071875 0.0070897 2 0
ENSG00000139613 SMARCC2 -0.1216678 0.0157340 2 0
ENSG00000100354 TNRC6B 0.0743824 0.0176021 2 0
ENSG00000117139 KDM5B 0.0812808 0.0199837 2 0
ENSG00000177565 TBL1XR1 -0.0818411 0.0199909 2 0
ENSG00000119866 BCL11A -0.1385413 0.0201052 2 1
ENSG00000254585 MAGEL2 -0.9845925 0.0208223 2 0
ENSG00000141027 NCOR1 0.0788144 0.0247581 2 0
ENSG00000079432 CIC -0.1441292 0.0258571 2 0
ENSG00000103507 BCKDK -0.1208062 0.0314570 2 0
ENSG00000172264 MACROD2 -0.1059802 0.0326414 2 0
ENSG00000157445 CACNA2D3 -0.1567730 0.0329570 2 0
ENSG00000181722 ZBTB20 0.3504977 0.0000000 3 0
ENSG00000182621 PLCB1 -0.2441636 0.0000000 3 0
ENSG00000141646 SMAD4 0.2217865 0.0000000 3 1
ENSG00000144285 SCN1A -0.4159570 0.0000000 3 1
ENSG00000168769 TET2 0.2505504 0.0000000 3 0
ENSG00000132294 EFR3A -0.2174879 0.0000001 3 0
ENSG00000074590 NUAK1 -0.3389639 0.0000001 3 0
ENSG00000196876 SCN8A -0.2948736 0.0000003 3 1
ENSG00000181090 EHMT1 0.1885501 0.0000003 3 0
ENSG00000170579 DLGAP1 -0.2485110 0.0000006 3 0
ENSG00000078328 RBFOX1 -0.2619988 0.0000013 3 0
ENSG00000175497 DPP10 -0.2165204 0.0000015 3 0
ENSG00000116117 PARD3B 0.3462418 0.0000016 3 0
ENSG00000197535 MYO5A -0.2531336 0.0000020 3 1
ENSG00000103197 TSC2 -0.1486305 0.0000034 3 1
ENSG00000171759 PAH -0.7386133 0.0000037 3 0
ENSG00000104388 RAB2A -0.1404802 0.0000050 3 0
ENSG00000157087 ATP2B2 -0.2951246 0.0000061 3 1
ENSG00000197102 DYNC1H1 -0.1946649 0.0000147 3 0
ENSG00000185345 PRKN -0.2076752 0.0000156 3 1
ENSG00000021645 NRXN3 -0.2230450 0.0000188 3 0
ENSG00000139726 DENR -0.1469066 0.0000294 3 0
ENSG00000136854 STXBP1 -0.3440447 0.0000296 3 1
ENSG00000109911 ELP4 0.2517356 0.0000315 3 0
ENSG00000005955 GGNBP2 -0.1529230 0.0000345 3 0
ENSG00000113328 CCNG1 0.2191924 0.0000365 3 1
ENSG00000142230 SAE1 -0.1524692 0.0000423 3 0
ENSG00000083168 KAT6A 0.1295461 0.0000430 3 0
ENSG00000003147 ICA1 -0.1944376 0.0000557 3 0
ENSG00000112655 PTK7 0.3566805 0.0000841 3 1
ENSG00000166313 APBB1 -0.2123724 0.0001062 3 1
ENSG00000124140 SLC12A5 -0.2947685 0.0001509 3 1
ENSG00000050030 NEXMIF -0.1501763 0.0002959 3 0
ENSG00000135046 ANXA1 0.9375162 0.0003261 3 0
ENSG00000166501 PRKCB -0.2506441 0.0003264 3 0
ENSG00000079482 OPHN1 0.1904344 0.0003430 3 0
ENSG00000162946 DISC1 0.3168897 0.0003484 3 1
ENSG00000132604 TERF2 -0.1640482 0.0004526 3 0
ENSG00000182771 GRID1 -0.1632933 0.0005041 3 0
ENSG00000087085 ACHE -0.3947803 0.0005695 3 0
ENSG00000170745 KCNS3 -0.3582251 0.0005768 3 0
ENSG00000146247 PHIP 0.1589965 0.0006217 3 0
ENSG00000164506 STXBP5 -0.1500483 0.0006506 3 0
ENSG00000127914 AKAP9 0.1344363 0.0006929 3 0
ENSG00000146830 GIGYF1 -0.1587235 0.0009162 3 0
ENSG00000128849 CGNL1 0.2631122 0.0011165 3 0
ENSG00000127616 SMARCA4 -0.1637855 0.0012156 3 0
ENSG00000259207 ITGB3 0.7716231 0.0013870 3 0
ENSG00000068793 CYFIP1 0.1981246 0.0014571 3 1
ENSG00000132024 CC2D1A -0.1399777 0.0017168 3 0
ENSG00000176884 GRIN1 -0.2513044 0.0018130 3 1
ENSG00000205581 HMGN1 0.1797030 0.0018679 3 0
ENSG00000185008 ROBO2 -0.1841714 0.0022998 3 1
ENSG00000072682 P4HA2 0.2345258 0.0024387 3 0
ENSG00000107099 DOCK8 0.3567262 0.0025183 3 0
ENSG00000197724 PHF2 0.1107350 0.0028067 3 0
ENSG00000180370 PAK2 0.1401026 0.0042057 3 0
ENSG00000065526 SPEN 0.1856996 0.0052829 3 0
ENSG00000135439 AGAP2 -0.1856231 0.0053801 3 1
ENSG00000100241 SBF1 -0.1510652 0.0054083 3 0
ENSG00000008083 JARID2 0.1426304 0.0054164 3 0
ENSG00000092964 DPYSL2 -0.1310410 0.0068036 3 1
ENSG00000117362 APH1A 0.1302161 0.0074346 3 0
ENSG00000101489 CELF4 -0.1629384 0.0080235 3 0
ENSG00000107077 KDM4C 0.1402901 0.0092780 3 0
ENSG00000106290 TAF6 -0.1606659 0.0104880 3 0
ENSG00000165300 SLITRK5 -0.1319850 0.0105408 3 0
ENSG00000169918 OTUD7A -0.1142565 0.0120139 3 0
ENSG00000089006 SNX5 0.1048472 0.0124875 3 0
ENSG00000128815 WDFY4 0.2774197 0.0134723 3 0
ENSG00000183454 GRIN2A -0.1639773 0.0142114 3 1
ENSG00000095564 BTAF1 0.1347628 0.0153311 3 0
ENSG00000124126 PREX1 0.1300246 0.0154312 3 0
ENSG00000185973 TMLHE 0.1694296 0.0161031 3 0
ENSG00000182256 GABRG3 -0.1314951 0.0201630 3 0
ENSG00000133026 MYH10 -0.1103939 0.0209196 3 1
ENSG00000070190 DAPP1 0.5935422 0.0222045 3 0
ENSG00000104517 UBR5 0.1051990 0.0223542 3 0
ENSG00000139174 PRICKLE1 -0.1278354 0.0263589 3 0
ENSG00000105737 GRIK5 -0.1539730 0.0283319 3 1
ENSG00000075043 KCNQ2 -0.1206093 0.0293157 3 0
ENSG00000181555 SETD2 0.0979522 0.0318025 3 0
ENSG00000145020 AMT 0.1373687 0.0352274 3 0
ENSG00000196361 ELAVL3 -0.1205515 0.0360371 3 0
ENSG00000167632 TRAPPC9 -0.1029582 0.0375666 3 0
ENSG00000184156 KCNQ3 -0.1695747 0.0387824 3 0
ENSG00000134698 AGO4 0.0677230 0.0394623 3 0
ENSG00000009335 UBE3C -0.0816458 0.0395080 3 0
ENSG00000136425 CIB2 -0.2059795 0.0410004 3 0
ENSG00000135387 CAPRIN1 0.0540932 0.0413076 3 0
ENSG00000174799 CEP135 0.1484550 0.0460509 3 0
ENSG00000108557 RAI1 -0.1395246 0.0465962 3 0

Session info

sessionInfo()
## R version 3.6.0 (2019-04-26)
## Platform: x86_64-redhat-linux-gnu (64-bit)
## Running under: Scientific Linux 7.6 (Nitrogen)
## 
## Matrix products: default
## BLAS/LAPACK: /usr/lib64/R/lib/libRblas.so
## 
## locale:
##  [1] LC_CTYPE=en_GB.UTF-8       LC_NUMERIC=C              
##  [3] LC_TIME=en_GB.UTF-8        LC_COLLATE=en_GB.UTF-8    
##  [5] LC_MONETARY=en_GB.UTF-8    LC_MESSAGES=en_GB.UTF-8   
##  [7] LC_PAPER=en_GB.UTF-8       LC_NAME=C                 
##  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
## [11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C       
## 
## attached base packages:
## [1] parallel  stats4    stats     graphics  grDevices utils     datasets 
## [8] methods   base     
## 
## other attached packages:
##  [1] knitr_1.24                  expss_0.10.1               
##  [3] DESeq2_1.26.0               SummarizedExperiment_1.16.1
##  [5] DelayedArray_0.12.2         BiocParallel_1.20.1        
##  [7] matrixStats_0.55.0          Biobase_2.46.0             
##  [9] GenomicRanges_1.38.0        GenomeInfoDb_1.22.0        
## [11] IRanges_2.20.2              S4Vectors_0.24.3           
## [13] BiocGenerics_0.32.0         ClusterR_1.2.1             
## [15] gtools_3.8.1                Rtsne_0.15                 
## [17] GGally_1.4.0                gridExtra_2.3              
## [19] viridis_0.5.1               viridisLite_0.3.0          
## [21] RColorBrewer_1.1-2          plotlyutils_0.0.0.9000     
## [23] plotly_4.9.2                glue_1.3.1                 
## [25] reshape2_1.4.3              forcats_0.4.0              
## [27] stringr_1.4.0               dplyr_0.8.3                
## [29] purrr_0.3.3                 readr_1.3.1                
## [31] tidyr_1.0.2                 tibble_2.1.3               
## [33] ggplot2_3.2.1               tidyverse_1.3.0            
## 
## loaded via a namespace (and not attached):
##  [1] colorspace_1.4-1       htmlTable_1.13.1       XVector_0.26.0        
##  [4] base64enc_0.1-3        fs_1.3.1               rstudioapi_0.10       
##  [7] bit64_0.9-7            AnnotationDbi_1.48.0   fansi_0.4.1           
## [10] lubridate_1.7.4        xml2_1.2.2             splines_3.6.0         
## [13] geneplotter_1.64.0     Formula_1.2-3          jsonlite_1.6          
## [16] Cairo_1.5-10           broom_0.5.4            annotate_1.64.0       
## [19] cluster_2.0.8          dbplyr_1.4.2           shiny_1.4.0           
## [22] compiler_3.6.0         httr_1.4.1             backports_1.1.5       
## [25] fastmap_1.0.1          assertthat_0.2.1       Matrix_1.2-17         
## [28] lazyeval_0.2.2         cli_2.0.1              later_1.0.0           
## [31] acepack_1.4.1          htmltools_0.4.0        tools_3.6.0           
## [34] gmp_0.5-13.6           gtable_0.3.0           GenomeInfoDbData_1.2.2
## [37] Rcpp_1.0.3             cellranger_1.1.0       vctrs_0.2.2           
## [40] nlme_3.1-139           crosstalk_1.0.0        xfun_0.8              
## [43] rvest_0.3.5            mime_0.9               lifecycle_0.1.0       
## [46] XML_3.99-0.3           zlibbioc_1.32.0        scales_1.1.0          
## [49] promises_1.1.0         hms_0.5.3              yaml_2.2.0            
## [52] memoise_1.1.0          rpart_4.1-15           RSQLite_2.2.0         
## [55] reshape_0.8.8          latticeExtra_0.6-28    stringi_1.4.6         
## [58] highr_0.8              genefilter_1.68.0      checkmate_1.9.4       
## [61] rlang_0.4.4            pkgconfig_2.0.3        bitops_1.0-6          
## [64] evaluate_0.14          lattice_0.20-38        labeling_0.3          
## [67] htmlwidgets_1.5.1      bit_1.1-15.2           tidyselect_0.2.5      
## [70] plyr_1.8.5             magrittr_1.5           R6_2.4.1              
## [73] generics_0.0.2         Hmisc_4.2-0            DBI_1.1.0             
## [76] pillar_1.4.3           haven_2.2.0            foreign_0.8-71        
## [79] withr_2.1.2            survival_2.44-1.1      RCurl_1.95-4.12       
## [82] nnet_7.3-12            modelr_0.1.5           crayon_1.3.4          
## [85] rmarkdown_1.14         locfit_1.5-9.1         grid_3.6.0            
## [88] readxl_1.3.1           data.table_1.12.8      blob_1.2.1            
## [91] reprex_0.3.0           digest_0.6.24          xtable_1.8-4          
## [94] httpuv_1.5.2           munsell_0.5.0